package org.fisco.bcos.sdk.demo.contract.dgms;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.fisco.bcos.sdk.v3.client.Client;
import org.fisco.bcos.sdk.v3.codec.datatypes.Address;
import org.fisco.bcos.sdk.v3.codec.datatypes.Bool;
import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray;
import org.fisco.bcos.sdk.v3.codec.datatypes.Event;
import org.fisco.bcos.sdk.v3.codec.datatypes.Function;
import org.fisco.bcos.sdk.v3.codec.datatypes.Type;
import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference;
import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.v3.contract.Contract;
import org.fisco.bcos.sdk.v3.crypto.CryptoSuite;
import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.v3.model.CryptoType;
import org.fisco.bcos.sdk.v3.model.TransactionReceipt;
import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class Factory extends Contract {
    public static final String[] BINARY_ARRAY = {
        "60806040526200001e3362000065640100000000026401000000009004565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200030c565b62000089816000620000cf64010000000002620005f9179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f861a21548a3ee34d896ccac3668a9d65030aaf2cb7367a2ed13608014016a03260405160405180910390a250565b620000ea82826200018d640100000000026401000000009004565b1515156200012f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012690620002c8565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151562000203576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001fa90620002ea565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000601c82527f31373a206163636f756e7420616c72656164792068617320726f6c65000000006020830152604082019050919050565b6000601f82527f31393a206163636f756e7420697320746865207a65726f2061646472657373006020830152604082019050919050565b60006020820190508181036000830152620002e3816200025a565b9050919050565b60006020820190508181036000830152620003058162000291565b9050919050565b6177db806200031c6000396000f30060806040526004361062000073576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806330ddbec0146200007857806350c358a414620000bc578063880f40391462000100578063d9c862e1146200012e578063f315df861462000172575b600080fd5b3480156200008557600080fd5b50620000a460048036036200009e91908101906200093c565b620001a0565b604051620000b3919062000c86565b60405180910390f35b348015620000c957600080fd5b50620000e86004803603620000e2919081019062000910565b62000259565b604051620000f7919062000d1b565b60405180910390f35b3480156200010d57600080fd5b506200012c600480360362000126919081019062000910565b62000278565b005b3480156200013b57600080fd5b506200015a6004803603620001549190810190620009af565b6200031b565b60405162000169919062000c86565b60405180910390f35b3480156200017f57600080fd5b506200019e600480360362000198919081019062000910565b620003d1565b005b600080620001ae3362000259565b1515620001f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001e99062000dc0565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684846200022162000756565b6200022f9392919062000ca3565b604051809103906000f0801580156200024c573d6000803e3d6000fd5b5090508091505092915050565b6000620002718260006200047490919063ffffffff16565b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200030d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003049062000d7c565b60405180910390fd5b620003188162000541565b50565b600080620003293362000259565b15156200036d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003649062000dc0565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836200039b62000767565b620003a892919062000cee565b604051809103906000f080158015620003c5573d6000803e3d6000fd5b50905080915050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000466576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200045d9062000d7c565b60405180910390fd5b62000471816200059d565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620004ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004e19062000d9e565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b62000557816000620005f990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f861a21548a3ee34d896ccac3668a9d65030aaf2cb7367a2ed13608014016a03260405160405180910390a250565b620005b3816000620006a890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167ffdb22628e87f888d060acc53d048a6a8400a5024f81f9dcb0606e723f238864a60405160405180910390a250565b62000605828262000474565b1515156200064a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006419062000d38565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620006b4828262000474565b1515620006f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ef9062000d5a565b60405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b604051613c628062000f9b83390190565b604051612ba58062004bfd83390190565b600062000786823562000f1a565b905092915050565b600082601f8301121515620007a257600080fd5b8135620007b9620007b38262000e10565b62000de2565b9150818183526020840193506020810190508360005b83811015620008035781358601620007e888826200089c565b845260208401935060208301925050600181019050620007cf565b5050505092915050565b600082601f83011215156200082157600080fd5b813562000838620008328262000e39565b62000de2565b915081818352602084019350602081019050838560208402820111156200085e57600080fd5b60005b83811015620008925781620008778882620008fa565b84526020840193506020830192505060018101905062000861565b5050505092915050565b600082601f8301121515620008b057600080fd5b8135620008c7620008c18262000e62565b62000de2565b91508082526020830160208301858383011115620008e457600080fd5b620008f183828462000f44565b50505092915050565b600062000908823562000f3a565b905092915050565b6000602082840312156200092357600080fd5b6000620009338482850162000778565b91505092915050565b600080604083850312156200095057600080fd5b600083013567ffffffffffffffff8111156200096b57600080fd5b62000979858286016200080d565b925050602083013567ffffffffffffffff8111156200099757600080fd5b620009a5858286016200078e565b9150509250929050565b600060208284031215620009c257600080fd5b6000620009d284828501620008fa565b91505092915050565b620009e68162000ee4565b82525050565b6000620009f98262000ea9565b8084526020840193508360208202850162000a148562000e8f565b60005b8481101562000a5357838303885262000a3283835162000ada565b925062000a3f8262000eca565b915060208801975060018101905062000a17565b508196508694505050505092915050565b600062000a718262000eb4565b80845260208401935062000a858362000e9c565b60005b8281101562000abd5762000a9e86835162000c75565b62000aa98262000ed7565b915060208601955060018101905062000a88565b50849250505092915050565b62000ad48162000f04565b82525050565b600062000ae78262000ebf565b80845262000afd81602086016020860162000f53565b62000b088162000f89565b602085010191505092915050565b6000601c82527f31373a206163636f756e7420616c72656164792068617320726f6c65000000006020830152604082019050919050565b6000601e82527f31383a206163636f756e7420646f6573206e6f74206861766520726f6c6500006020830152604082019050919050565b6000602f82527f30323a2063616c6c657220646f6573206e6f742068617665207468652066616360208301527f746f7279206f776e657220726f6c6500000000000000000000000000000000006040830152606082019050919050565b6000601f82527f31393a206163636f756e7420697320746865207a65726f2061646472657373006020830152604082019050919050565b6000602a82527f30313a2063616c6c657220646f6573206e6f742068617665207468652064657060208301527f6c6f79657220726f6c65000000000000000000000000000000000000000000006040830152606082019050919050565b62000c808162000f10565b82525050565b600060208201905062000c9d6000830184620009db565b92915050565b600060608201905062000cba6000830186620009db565b818103602083015262000cce818562000a64565b9050818103604083015262000ce48184620009ec56",
        "5b9050949350505050565b600060408201905062000d056000830185620009db565b62000d14602083018462000c75565b9392505050565b600060208201905062000d32600083018462000ac9565b92915050565b6000602082019050818103600083015262000d538162000b16565b9050919050565b6000602082019050818103600083015262000d758162000b4d565b9050919050565b6000602082019050818103600083015262000d978162000b84565b9050919050565b6000602082019050818103600083015262000db98162000be1565b9050919050565b6000602082019050818103600083015262000ddb8162000c18565b9050919050565b6000604051905081810181811067ffffffffffffffff8211171562000e0657600080fd5b8060405250919050565b600067ffffffffffffffff82111562000e2857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562000e5157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562000e7a57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101562000f7357808201518184015260208101905062000f56565b8381111562000f83576000848401525b50505050565b6000601f19601f8301169050919050560060806040526040805190810160405280600981526020017f4f6e65546f4d6f72650000000000000000000000000000000000000000000000815250600990805190602001906200005192919062000543565b5073ffffffffffffffffffffffffffffffffffffffff600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000b457600080fd5b5060405162003c6238038062003c628339810180604052620000da919081019062000947565b6000808480620000f9326200034e640100000000026401000000009004565b32600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000600260146101000a81548160ff0219169083151502179055505082518451141515620001e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001d89062000b47565b60405180910390fd5b600090505b83518110156200027b57600084828151811015156200020157fe5b9060200190602002015111151562000250576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002479062000b03565b60405180910390fd5b83818151811015156200025f57fe5b90602001906020020151820191508080600101915050620001e6565b6000821180156200028f5750638000000082105b1515620002d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ca9062000b69565b60405180910390fd5b6007829080600181540180825580915050906001820390600052602060002001600090919290919091505550836006600060018152602001908152602001600020908051906020019062000329929190620005ca565b508260059080519060200190620003429291906200061c565b50505050505062000c98565b62000372816000620003b86401000000000262001dad179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f05e7c881d716bee8cb7ed92293133ba156704252439e5c502c277448f04e20c260405160405180910390a250565b620003d3828262000476640100000000026401000000009004565b15151562000418576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200040f9062000ae1565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620004ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004e39062000b25565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200058657805160ff1916838001178555620005b7565b82800160010185558215620005b7579182015b82811115620005b657825182559160200191906001019062000599565b5b509050620005c6919062000683565b5090565b82805482825590600052602060002090810192821562000609579160200282015b8281111562000608578251825591602001919060010190620005eb565b5b50905062000618919062000683565b5090565b82805482825590600052602060002090810192821562000670579160200282015b828111156200066f5782518290805190602001906200065e929190620006ab565b50916020019190600101906200063d565b5b5090506200067f919062000732565b5090565b620006a891905b80821115620006a45760008160009055506001016200068a565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006ee57805160ff19168380011785556200071f565b828001600101855582156200071f579182015b828111156200071e57825182559160200191906001019062000701565b5b5090506200072e919062000683565b5090565b6200076091905b808211156200075c576000818162000752919062000763565b5060010162000739565b5090565b90565b50805460018160011615610100020316600290046000825580601f106200078b5750620007ac565b601f016020900490600052602060002090810190620007ab919062000683565b5b50565b6000620007bd825162000c38565b905092915050565b600082601f8301121515620007d957600080fd5b8151620007f0620007ea8262000bb9565b62000b8b565b9150818183526020840193506020810190508360005b838110156200083a57815186016200081f8882620008d3565b84526020840193506020830192505060018101905062000806565b5050505092915050565b600082601f83011215156200085857600080fd5b81516200086f620008698262000be2565b62000b8b565b915081818352602084019350602081019050838560208402820111156200089557600080fd5b60005b83811015620008c95781620008ae888262000931565b84526020840193506020830192505060018101905062000898565b5050505092915050565b600082601f8301121515620008e757600080fd5b8151620008fe620008f88262000c0b565b62000b8b565b915080825260208301602083018583830111156200091b57600080fd5b6200092883828462000c62565b50505092915050565b60006200093f825162000c58565b905092915050565b6000806000606084860312156200095d57600080fd5b60006200096d86828701620007af565b935050602084015167ffffffffffffffff8111156200098b57600080fd5b620009998682870162000844565b925050604084015167ffffffffffffffff811115620009b757600080fd5b620009c586828701620007c5565b9150509250925092565b6000601c82527f31373a206163636f756e7420616c72656164792068617320726f6c65000000006020830152604082019050919050565b6000603082527f31343a206e657720746f74616c417373657473206d757374206e6f742062652060208301527f6c657373207468616e206265666f7265000000000000000000000000000000006040830152606082019050919050565b6000601f82527f31393a206163636f756e7420697320746865207a65726f2061646472657373006020830152604082019050919050565b6000808252602082019050919050565b6000601782527f30373a20496e76616c696420746f74616c4173736574730000000000000000006020830152604082019050919050565b6000602082019050818103600083015262000afc81620009cf565b9050919050565b6000602082019050818103600083015262000b1e8162000a06565b9050919050565b6000602082019050818103600083015262000b408162000a63565b9050919050565b6000602082019050818103600083015262000b628162000a9a565b9050919050565b6000602082019050818103600083015262000b848162000aaa565b9050919050565b6000604051905081810181811067ffffffffffffffff8211171562000baf57600080fd5b8060405250919050565b600067ffffffffffffffff82111562000bd157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562000bfa57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562000c2357600080fd5b601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000c8257808201518184015260208101905062000c65565b8381111562000c92576000848401525b50505050565b612fba8062000ca86000396000f3006080604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303dfd47c1461010157806320694db01461012a57806347bc709314610153578063495e72711461017c5780636352211e146101a55780636e07302b146101e2578063702efdf31461020d57806378b38f3614610238578063877b9a671461027557806389d850131461",
        "02b25780638ad7c500146102dd5780639e90f9aa14610306578063cb2ef6f714610331578063d0e7d6111461035c578063d7fb71c914610385578063e6400bbe1461039c578063e9fa0264146103b3578063f5cb17fa146103dc575b600080fd5b34801561010d57600080fd5b506101286004803603610123919081019061244b565b610419565b005b34801561013657600080fd5b50610151600480360361014c9190810190612295565b6107c3565b005b34801561015f57600080fd5b5061017a60048036036101759190810190612295565b6108b9565b005b34801561018857600080fd5b506101a3600480360361019e91908101906123e1565b6109af565b005b3480156101b157600080fd5b506101cc60048036036101c79190810190612422565b610c0e565b6040516101d99190612a8b565b60405180910390f35b3480156101ee57600080fd5b506101f7610cc2565b6040516102049190612aa6565b60405180910390f35b34801561021957600080fd5b50610222610d36565b60405161022f9190612ac8565b60405180910390f35b34801561024457600080fd5b5061025f600480360361025a9190810190612422565b610d4d565b60405161026c9190612b05565b60405180910390f35b34801561028157600080fd5b5061029c60048036036102979190810190612295565b611125565b6040516102a99190612ac8565b60405180910390f35b3480156102be57600080fd5b506102c7611142565b6040516102d49190612d67565b60405180910390f35b3480156102e957600080fd5b5061030460048036036102ff91908101906123a0565b61114c565b005b34801561031257600080fd5b5061031b6111fa565b6040516103289190612a8b565b60405180910390f35b34801561033d57600080fd5b50610346611220565b6040516103539190612ae3565b60405180910390f35b34801561036857600080fd5b50610383600480360361037e91908101906122be565b6112be565b005b34801561039157600080fd5b5061039a6115dc565b005b3480156103a857600080fd5b506103b161176b565b005b3480156103bf57600080fd5b506103da60048036036103d59190810190612339565b6118fb565b005b3480156103e857600080fd5b5061040360048036036103fe9190810190612295565b611b74565b6040516104109190612d67565b60405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806104c45750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fc90612b87565b60405180910390fd5b61050e83611bbd565b151561054f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054690612bc7565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166003600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c90612b47565b60405180910390fd5b6003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600860008282540392505081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fec17194b787c395cc9a4b1d5c8e4af64ed927684ad21898f1fb21f8818bed71b86866040516107b6929190612d82565b60405180910390a4505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061086c5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a490612b87565b60405180910390fd5b6108b681611c2f565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109625750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156109a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099a90612b87565b60405180910390fd5b6109ac81611c89565b50565b600060606000806109bf33611125565b1515610a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f790612d47565b60405180910390fd5b600780549050935060066000858152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610a6557602002820191906000526020600020905b815481526020019060010190808311610a51575b5050505050925084518351141515610ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa990612ca7565b60405180910390fd5b600090505b8451811015610b5c578281815181101515610ace57fe5b906020019060200201518582815181101515610ae657fe5b9060200190602002015110151515610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a90612be7565b60405180910390fd5b8481815181101515610b4157fe5b90602001906020020151820191508080600101915050610ab7565b600082118015610b6f5750638000000082105b1515610bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba790612d27565b60405180910390fd5b84600660006001870181526020019081526020016000209080519060200190610bda929190611f00565b5060078290806001815401808255809150509060018203906000526020600020016000909192909190915055505050505050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb090612bc7565b60405180910390fd5b80915050919050565b60606000600780549050905060066000828152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610d2b57602002820191906000526020600020905b815481526020019060010190808311610d17575b505050505091505090565b6000600260149054906101000a900460ff16905090565b606060008060008060076000815481101515610d6557fe5b906000526020600020015486111515610ed857600092505b600660006001815260200190815260200160002080549050831015610ed3578584108015610dd85750600660006001815260200190815260200160002083815481101515610dc757fe5b906000526020600020015484018611155b15610e9657600583815481101515610dec57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e8a5780601f10610e5f57610100808354040283529160200191610e8a565b820191906000526020600020905b815481529060010190602001808311610e6d57829003601f168201915b5050505050945061111c565b600660006001815260200190815260200160002083815481101515610eb757fe5b9060005260206000200154840193508280600101935050610d7d565b61111b565b600091505b60078054905082101561111a57600782815481101515610ef957fe5b906000526020600020015486118015610f2e5750600760018301815481101515610f1f57fe5b90600052602060002001548611155b1561110d57600782815481101515610f4257fe5b90600052602060002001549350600090505b60066000600181526020019081526020016000208054905081101561110c578584108015610fe057506006600060018401815260200190815260200160002081815481101515610fa057fe5b90600052602060002001546006600060028501815260200190815260200160002082815481101515610fce57fe5b90600052602060002001548501038611155b1561109e57600581815481101515610ff457fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110925780601f1061106757610100808354040283529160200191611092565b820191906000526020600020905b81548152906001019060200180831161107557829003601f168201915b5050505050945061111c565b6006",
        "6000600184018152602001908152602001600020818154811015156110c157fe5b906000526020600020015460066000600285018152602001908152602001600020828154811015156110ef57fe5b906000526020600020015485010393508080600101915050610f54565b5b8180600101925050610edd565b5b5b50505050919050565b600061113b826000611ce390919063ffffffff16565b9050919050565b6000600854905090565b61115533611125565b1515611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90612d47565b60405180910390fd5b80516005805490501415156111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790612c07565b60405180910390fd5b80600590805190602001906111f6929190611f4d565b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112b65780601f1061128b576101008083540402835291602001916112b6565b820191906000526020600020905b81548152906001019060200180831161129957829003601f168201915b505050505081565b600260149054906101000a900460ff16151515611310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130790612d07565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1661133083610c0e565b73ffffffffffffffffffffffffffffffffffffffff16141515611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90612c87565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415156113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef90612c87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190612b67565b60405180910390fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fec17194b787c395cc9a4b1d5c8e4af64ed927684ad21898f1fb21f8818bed71b85856040516115ce929190612d82565b60405180910390a450505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116855750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90612b87565b60405180910390fd5b600260149054906101000a900460ff161515611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e90612c27565b60405180910390fd5b6000600260146101000a81548160ff0219169083151502179055507f349b4285cb8dde314c53fd9d8e8e578381a7375e4f76f9dd9fe07f9960f120a4336040516117619190612a8b565b60405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118145750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c90612b87565b60405180910390fd5b600260149054906101000a900460ff161515156118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e90612d07565b60405180910390fd5b6001600260146101000a81548160ff0219169083151502179055507f6f123d3d54c84a7960a573b31c221dcd86e13fd849c5adb0c6ca851468cc1ae4336040516118f19190612a8b565b60405180910390a1565b600061190633611125565b1515611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90612d47565b60405180910390fd5b600780549050905060076001820381548110151561196157fe5b906000526020600020015483111515156119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a790612cc7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1990612ce7565b60405180910390fd5b611a2b83611bbd565b151515611a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6490612c67565b60405180910390fd5b836003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600082825401925050819055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff167fe27ce25058d1e88f777ec4e0733304e9f1d0168f3974622dc9dacbdf039f31028484604051611b66929190612d82565b60405180910390a250505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b611c43816000611dad90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f05e7c881d716bee8cb7ed92293133ba156704252439e5c502c277448f04e20c260405160405180910390a250565b611c9d816000611e5790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167faf66545c919a3be306ee446d8f42a9558b5b022620df880517bc9593ec0f2d5260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4d90612c47565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611db78282611ce3565b151515611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090612b27565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e618282611ce3565b1515611ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9990612ba7565b60405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b828054828255906000526020600020908101928215611f3c579160200282015b82811115611f3b578251825591602001919060010190611f20565b5b509050611f499190611fad565b5090565b828054828255906000526020600020908101928215611f9c579160200282015b82811115611f9b578251829080519060200190611f8b929190611fd2565b5091602001919060010190611f6d565b5b509050611fa99190612052565b5090565b611fcf91905b80821115611fcb576000816000905550600101611fb3565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061201357805160ff1916838001178555612041565b82800160010185558215612041579182015b82811115612040578251825591602001919060010190612025565b5b50905061204e9190611fad565b5090565b61207b91905b80821115612077576000818161206e919061207e565b50600101612058565b5090565b90565b50805460018160011615610100020316600290046000825580601f106120a4575061",
        "20c3565b601f0160209004906000526020600020908101906120c29190611fad565b5b50565b60006120d28235612f03565b905092915050565b600082601f83011215156120ed57600080fd5b81356121006120fb82612ddf565b612db2565b9150818183526020840193506020810190508360005b83811015612146578135860161212c888261222b565b845260208401935060208301925050600181019050612116565b5050505092915050565b600082601f830112151561216357600080fd5b813561217661217182612e07565b612db2565b9150818183526020840193506020810190508385602084028201111561219b57600080fd5b60005b838110156121cb57816121b18882612281565b84526020840193506020830192505060018101905061219e565b5050505092915050565b600082601f83011215156121e857600080fd5b81356121fb6121f682612e2f565b612db2565b9150808252602083016020830185838301111561221757600080fd5b612222838284612f2d565b50505092915050565b600082601f830112151561223e57600080fd5b813561225161224c82612e5b565b612db2565b9150808252602083016020830185838301111561226d57600080fd5b612278838284612f2d565b50505092915050565b600061228d8235612f23565b905092915050565b6000602082840312156122a757600080fd5b60006122b5848285016120c6565b91505092915050565b600080600080608085870312156122d457600080fd5b60006122e2878288016120c6565b94505060206122f3878288016120c6565b935050604061230487828801612281565b925050606085013567ffffffffffffffff81111561232157600080fd5b61232d878288016121d5565b91505092959194509250565b60008060006060848603121561234e57600080fd5b600061235c868287016120c6565b935050602061236d86828701612281565b925050604084013567ffffffffffffffff81111561238a57600080fd5b612396868287016121d5565b9150509250925092565b6000602082840312156123b257600080fd5b600082013567ffffffffffffffff8111156123cc57600080fd5b6123d8848285016120da565b91505092915050565b6000602082840312156123f357600080fd5b600082013567ffffffffffffffff81111561240d57600080fd5b61241984828501612150565b91505092915050565b60006020828403121561243457600080fd5b600061244284828501612281565b91505092915050565b6000806040838503121561245e57600080fd5b600061246c85828601612281565b925050602083013567ffffffffffffffff81111561248957600080fd5b612495858286016121d5565b9150509250929050565b6124a881612ecd565b82525050565b60006124b982612e94565b8084526020840193506124cb83612e87565b60005b828110156124fd576124e1868351612a7c565b6124ea82612ec0565b91506020860195506001810190506124ce565b50849250505092915050565b61251281612eed565b82525050565b600061252382612e9f565b808452612537816020860160208601612f3c565b61254081612f6f565b602085010191505092915050565b600061255982612eb5565b80845261256d816020860160208601612f3c565b61257681612f6f565b602085010191505092915050565b600061258f82612eaa565b8084526125a3816020860160208601612f3c565b6125ac81612f6f565b602085010191505092915050565b6000601c82527f31373a206163636f756e7420616c72656164792068617320726f6c65000000006020830152604082019050919050565b6000601e82527f32303a206173736574496420686173206265656e2064657374726f79656400006020830152604082019050919050565b6000601c82527f31333a2073656e6420746f20746865207a65726f2061646472657373000000006020830152604082019050919050565b6000602d82527f30343a2063616c6c657220646f6573206e6f742068617665207468652073757060208301527f6572207065726d697373696f6e000000000000000000000000000000000000006040830152606082019050919050565b6000601e82527f31383a206163636f756e7420646f6573206e6f74206861766520726f6c6500006020830152604082019050919050565b6000601f82527f31313a206173736574496420646f6573206e6f742068617665206f776e6572006020830152604082019050919050565b6000603082527f31343a206e657720746f74616c417373657473206d757374206e6f742062652060208301527f6c657373207468616e206265666f7265000000000000000000000000000000006040830152606082019050919050565b6000602b82527f31363a206173736574496e666f2773206c656e677468206d757374206571756160208301527f6c20746f206265666f72650000000000000000000000000000000000000000006040830152606082019050919050565b6000601d82527f30363a20636f6e7472616374206973206e6f742073757370656e6465640000006020830152604082019050919050565b6000601f82527f31393a206163636f756e7420697320746865207a65726f2061646472657373006020830152604082019050919050565b6000601a82527f31303a206173736574496420616c7265616479206973737565640000000000006020830152604082019050919050565b6000602182527f31323a2073656e64657220646f6573206e6f74206f776e20746865206173736560208301527f74000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000602d82527f31353a20746f74616c4173736574732773206c656e677468206d75737420657160208301527f75616c20746f206265666f7265000000000000000000000000000000000000006040830152606082019050919050565b6000601e82527f30383a20617373657449642065786365656420746f74616c41737365747300006020830152604082019050919050565b6000601d82527f30393a20697373756520746f20746865207a65726f20616464726573730000006020830152604082019050919050565b6000601982527f30353a20636f6e74726163742069732073757370656e646564000000000000006020830152604082019050919050565b6000601782527f30373a20496e76616c696420746f74616c4173736574730000000000000000006020830152604082019050919050565b6000602e82527f30333a2063616c6c657220646f6573206e6f742068617665207468652069737360208301527f756572207065726d697373696f6e0000000000000000000000000000000000006040830152606082019050919050565b612a8581612ef9565b82525050565b6000602082019050612aa0600083018461249f565b92915050565b60006020820190508181036000830152612ac081846124ae565b905092915050565b6000602082019050612add6000830184612509565b92915050565b60006020820190508181036000830152612afd8184612584565b905092915050565b60006020820190508181036000830152612b1f818461254e565b905092915050565b60006020820190508181036000830152612b40816125ba565b9050919050565b60006020820190508181036000830152612b60816125f1565b9050919050565b60006020820190508181036000830152612b8081612628565b9050919050565b60006020820190508181036000830152612ba08161265f565b9050919050565b60006020820190508181036000830152612bc0816126bc565b9050919050565b60006020820190508181036000830152612be0816126f3565b9050919050565b60006020820190508181036000830152612c008161272a565b9050919050565b60006020820190508181036000830152612c2081612787565b9050919050565b60006020820190508181036000830152612c40816127e4565b9050919050565b60006020820190508181036000830152612c608161281b565b9050919050565b60006020820190508181036000830152612c8081612852565b9050919050565b60006020820190508181036000830152612ca081612889565b9050919050565b60006020820190508181036000830152612cc0816128e6565b9050919050565b60006020820190508181036000830152612ce081612943565b9050919050565b60006020820190508181036000830152612d008161297a565b9050919050565b60006020820190508181036000830152612d20816129b1565b9050919050565b60006020820190508181036000830152612d40816129e8565b9050919050565b60006020820190508181036000830152612d6081612a1f565b9050919050565b6000602082019050612d7c6000830184612a7c565b92915050565b6000604082019050612d976000830185612a7c565b8181036020830152612da98184612518565b90509392505050565b6000604051905081810181811067ffffffffffffffff82111715612dd557600080fd5b8060405250919050565b600067ffffffffffffffff821115612df657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612e1e57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612e4657600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612e7257600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612f5a578082015181840152602081019050612f3f565b83811115612f69576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820d36b7044454d63048a38cfb46b5a09dd20d3aa7a156b3dcbe78767b35cbfbf136c6578706572696d656e74616cf5003760806040526040805190810160405280600881526020017f4f6e65546f4f6e6500000000000000000000000000000000000000000000000081525060089080519060200190620000519291906200048c565b5073ffffffffffffffffffffffffffffffffffffffff600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000b457600080fd5b5060405160408062002ba5833981018060405281019080805190602001909291908051906020019092919050505081806200",
        "00fe3262000235640100000000026401000000009004565b32600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000600260146101000a81548160ff02191690831515021790555050600081118015620001b15750638000000081105b151562000226576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f30373a20496e76616c696420746f74616c41737365747300000000000000000081525060200191505060405180910390fd5b8060068190555050506200053b565b620002598160006200029f64010000000002620023d0179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f05e7c881d716bee8cb7ed92293133ba156704252439e5c502c277448f04e20c260405160405180910390a250565b620002ba82826200038e640100000000026401000000009004565b15151562000330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f31373a206163636f756e7420616c72656164792068617320726f6c650000000081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151562000435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f31393a206163636f756e7420697320746865207a65726f20616464726573730081525060200191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004cf57805160ff191683800117855562000500565b8280016001018555821562000500579182015b82811115620004ff578251825591602001919060010190620004e2565b5b5090506200050f919062000513565b5090565b6200053891905b80821115620005345760008160009055506001016200051a565b5090565b90565b61265a806200054b6000396000f3006080604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303dfd47c146101015780631f4f519c146101745780631f6320d3146101b557806320694db01461028e57806347bc7093146102d157806350c00197146103145780636352211e146103875780636e07302b146103f4578063702efdf31461041f57806378b38f361461044e578063877b9a67146104f457806389d850131461054f5780639e90f9aa1461057a578063cb2ef6f7146105d1578063d0e7d61114610661578063d7fb71c914610714578063e6400bbe1461072b578063f5cb17fa14610742575b600080fd5b34801561010d57600080fd5b5061017260048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610799565b005b34801561018057600080fd5b5061019f60048036038101908080359060200190929190505050610c6d565b6040518082815260200191505060405180910390f35b3480156101c157600080fd5b5061028c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610e45565b005b34801561029a57600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061121f565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061136e565b005b34801561032057600080fd5b5061038560048036038101908080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506114bd565b005b34801561039357600080fd5b506103b26004803603810190808035906020019092919050505061158c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040057600080fd5b50610409611673565b6040518082815260200191505060405180910390f35b34801561042b57600080fd5b5061043461167d565b604051808215151515815260200191505060405180910390f35b34801561045a57600080fd5b5061047960048036038101908080359060200190929190505050611694565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104b957808201518184015260208101905061049e565b50505050905090810190601f1680156104e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561050057600080fd5b50610535600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611749565b604051808215151515815260200191505060405180910390f35b34801561055b57600080fd5b50610564611766565b6040518082815260200191505060405180910390f35b34801561058657600080fd5b5061058f611770565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105dd57600080fd5b506105e6611796565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561062657808201518184015260208101905061060b565b50505050905090810190601f1680156106535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561066d57600080fd5b50610712600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611834565b005b34801561072057600080fd5b50610729611cd5565b005b34801561073757600080fd5b50610740611f1c565b005b34801561074e57600080fd5b50610783600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612164565b6040518082815260200191505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108445750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156108de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f30343a2063616c6c657220646f6573206e6f742068617665207468652073757081526020017f6572207065726d697373696f6e0000000000000000000000000000000000000081525060400191505060405180910390fd5b6108e7836121ad565b151561095b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f31313a206173736574496420646f6573206e6f742068617665206f776e65720081525060200191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166003600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610a54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f32303a206173736574496420686173206265656e2064657374726f796564000081525060200191505060405180910390fd5b6003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600760008282540392505081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffff",
        "ffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fec17194b787c395cc9a4b1d5c8e4af64ed927684ad21898f1fb21f8818bed71b86866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c2d578082015181840152602081019050610c12565b50505050905090810190601f168015610c5a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b6000610c7833611749565b1515610d12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f30333a2063616c6c657220646f6573206e6f742068617665207468652069737381526020017f756572207065726d697373696f6e00000000000000000000000000000000000081525060400191505060405180910390fd5b6006548210151515610db2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f31343a206e657720746f74616c417373657473206d757374206e6f742062652081526020017f6c657373207468616e206265666f72650000000000000000000000000000000081525060400191505060405180910390fd5b600082118015610dc55750638000000082105b1515610e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f30373a20496e76616c696420746f74616c41737365747300000000000000000081525060200191505060405180910390fd5b81600681905550919050565b610e4e33611749565b1515610ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f30333a2063616c6c657220646f6573206e6f742068617665207468652069737381526020017f756572207065726d697373696f6e00000000000000000000000000000000000081525060400191505060405180910390fd5b6006548311151515610f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f30383a20617373657449642065786365656420746f74616c417373657473000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611007576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f30393a20697373756520746f20746865207a65726f206164647265737300000081525060200191505060405180910390fd5b611010836121ad565b151515611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f31303a206173736574496420616c72656164792069737375656400000000000081525060200191505060405180910390fd5b836003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816005600085815260200190815260200160002090805190602001906110fe929190612589565b5060016007600082825401925050819055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff167fe27ce25058d1e88f777ec4e0733304e9f1d0168f3974622dc9dacbdf039f310284836040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156111de5780820151818401526020810190506111c3565b50505050905090810190601f16801561120b5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a250505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112c85750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f30343a2063616c6c657220646f6573206e6f742068617665207468652073757081526020017f6572207065726d697373696f6e0000000000000000000000000000000000000081525060400191505060405180910390fd5b61136b8161221f565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114175750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156114b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f30343a2063616c6c657220646f6573206e6f742068617665207468652073757081526020017f6572207065726d697373696f6e0000000000000000000000000000000000000081525060400191505060405180910390fd5b6114ba81612279565b50565b6114c633611749565b1515611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f30333a2063616c6c657220646f6573206e6f742068617665207468652069737381526020017f756572207065726d697373696f6e00000000000000000000000000000000000081525060400191505060405180910390fd5b80600560008481526020019081526020016000209080519060200190611587929190612589565b505050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561166a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f31313a206173736574496420646f6573206e6f742068617665206f776e65720081525060200191505060405180910390fd5b80915050919050565b6000600654905090565b6000600260149054906101000a900460ff16905090565b6060600560008381526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561173d5780601f106117125761010080835404028352916020019161173d565b820191906000526020600020905b81548152906001019060200180831161172057829003601f168201915b50505050509050919050565b600061175f8260006122d390919063ffffffff16565b9050919050565b6000600754905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561182c5780601f106118015761010080835404028352916020019161182c565b820191906000526020600020905b81548152906001019060200180831161180f57829003601f168201915b505050505081565b600260149054906101000a900460ff161515156118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f30353a20636f6e74726163742069732073757370656e6465640000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166118d98361158c565b73ffffffffffffffffffffffffffffffffffffffff1614151561198a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f31323a2073656e64657220646f6573206e6f74206f776e20746865206173736581526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515611a53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f31323a2073656e64657220646f6573206e6f74206f776e20746865206173736581526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611af8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f31333a2073656e6420746f20746865207a65726f20616464726573730000000081525060200191505060405180910390fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600160",
        "0460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fec17194b787c395cc9a4b1d5c8e4af64ed927684ad21898f1fb21f8818bed71b85856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c94578082015181840152602081019050611c79565b50505050905090810190601f168015611cc15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a450505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611d7e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f30343a2063616c6c657220646f6573206e6f742068617665207468652073757081526020017f6572207065726d697373696f6e0000000000000000000000000000000000000081525060400191505060405180910390fd5b600260149054906101000a900460ff161515611e9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f30363a20636f6e7472616374206973206e6f742073757370656e64656400000081525060200191505060405180910390fd5b6000600260146101000a81548160ff0219169083151502179055507f349b4285cb8dde314c53fd9d8e8e578381a7375e4f76f9dd9fe07f9960f120a433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611fc55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561205f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f30343a2063616c6c657220646f6573206e6f742068617665207468652073757081526020017f6572207065726d697373696f6e0000000000000000000000000000000000000081525060400191505060405180910390fd5b600260149054906101000a900460ff161515156120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f30353a20636f6e74726163742069732073757370656e6465640000000000000081525060200191505060405180910390fd5b6001600260146101000a81548160ff0219169083151502179055507f6f123d3d54c84a7960a573b31c221dcd86e13fd849c5adb0c6ca851468cc1ae433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6122338160006123d090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f05e7c881d716bee8cb7ed92293133ba156704252439e5c502c277448f04e20c260405160405180910390a250565b61228d8160006124ad90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167faf66545c919a3be306ee446d8f42a9558b5b022620df880517bc9593ec0f2d5260405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f31393a206163636f756e7420697320746865207a65726f20616464726573730081525060200191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6123da82826122d3565b15151561244f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f31373a206163636f756e7420616c72656164792068617320726f6c650000000081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6124b782826122d3565b151561252b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f31383a206163636f756e7420646f6573206e6f74206861766520726f6c65000081525060200191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125ca57805160ff19168380011785556125f8565b828001600101855582156125f8579182015b828111156125f75782518255916020019190600101906125dc565b5b5090506126059190612609565b5090565b61262b91905b8082111561262757600081600090555060010161260f565b5090565b905600a165627a7a72305820d128450b5233b50de50f30f98d03ba410aa8dc5ccf0c4db4d04d30a3dee254fd0029a265627a7a72305820dcfa72b096ac441a8cab3e6119d5e766fbbe23e8e63b6fd30906bd656ad090d86c6578706572696d656e74616cf50037"
    };

    public static final String BINARY =
            org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {
        "60806040526200001e3362000065640100000000026401000000009004565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200030c565b62000089816000620000cf64010000000002620005f9179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f40db285262dd60fe40a5f999ae25fd4652a68d5cbd0c15ed28e025df40863d7060405160405180910390a250565b620000ea82826200018d640100000000026401000000009004565b1515156200012f576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200012690620002ea565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151562000203576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620001fa90620002c8565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000601f82527f31393a206163636f756e7420697320746865207a65726f2061646472657373006020830152604082019050919050565b6000601c82527f31373a206163636f756e7420616c72656164792068617320726f6c65000000006020830152604082019050919050565b60006020820190508181036000830152620002e3816200025a565b9050919050565b60006020820190508181036000830152620003058162000291565b9050919050565b6177db806200031c6000396000f30060806040526004361062000073576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806317f844f8146200007857806358ac245114620000a657806360df6d5914620000ea5780636d43e18f146200012e578063f9ce3adc1462000172575b600080fd5b3480156200008557600080fd5b50620000a460048036036200009e919081019062000910565b620001a0565b005b348015620000b357600080fd5b50620000d26004803603620000cc91908101906200093c565b62000243565b604051620000e1919062000c86565b60405180910390f35b348015620000f757600080fd5b50620001166004803603620001109190810190620009af565b620002fc565b60405162000125919062000c86565b60405180910390f35b3480156200013b57600080fd5b506200015a600480360362000154919081019062000910565b620003b2565b60405162000169919062000d1b565b60405180910390f35b3480156200017f57600080fd5b506200019e600480360362000198919081019062000910565b620003d1565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000235576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200022c9062000d9e565b60405180910390fd5b620002408162000474565b50565b6000806200025133620003b2565b151562000295576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200028c9062000d38565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168484620002c462000756565b620002d29392919062000ca3565b604051809103906000f080158015620002ef573d6000803e3d6000fd5b5090508091505092915050565b6000806200030a33620003b2565b15156200034e576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620003459062000d38565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836200037c62000767565b6200038992919062000cee565b604051809103906000f080158015620003a6573d6000803e3d6000fd5b50905080915050919050565b6000620003ca826000620004d090919063ffffffff16565b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000466576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200045d9062000d9e565b60405180910390fd5b62000471816200059d565b50565b6200048a816000620005f990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f40db285262dd60fe40a5f999ae25fd4652a68d5cbd0c15ed28e025df40863d7060405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151562000546576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200053d9062000d7c565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b620005b3816000620006a890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe30b559711e83a97043d2c6d5613af87f28d1db8badbf39b88584052b697d2ec60405160405180910390a250565b620006058282620004d0565b1515156200064a576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620006419062000dc0565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620006b48282620004d0565b1515620006f8576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620006ef9062000d5a565b60405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b604051613c628062000f9b83390190565b604051612ba58062004bfd83390190565b600062000786823562000f1a565b905092915050565b600082601f8301121515620007a257600080fd5b8135620007b9620007b38262000e10565b62000de2565b9150818183526020840193506020810190508360005b83811015620008035781358601620007e888826200089c565b845260208401935060208301925050600181019050620007cf565b5050505092915050565b600082601f83011215156200082157600080fd5b813562000838620008328262000e39565b62000de2565b915081818352602084019350602081019050838560208402820111156200085e57600080fd5b60005b83811015620008925781620008778882620008fa565b84526020840193506020830192505060018101905062000861565b5050505092915050565b600082601f8301121515620008b057600080fd5b8135620008c7620008c18262000e62565b62000de2565b91508082526020830160208301858383011115620008e457600080fd5b620008f183828462000f44565b50505092915050565b600062000908823562000f3a565b905092915050565b6000602082840312156200092357600080fd5b6000620009338482850162000778565b91505092915050565b600080604083850312156200095057600080fd5b600083013567ffffffffffffffff8111156200096b57600080fd5b62000979858286016200080d565b925050602083013567ffffffffffffffff8111156200099757600080fd5b620009a5858286016200078e565b9150509250929050565b600060208284031215620009c257600080fd5b6000620009d284828501620008fa565b91505092915050565b620009e68162000ee4565b82525050565b6000620009f98262000ea9565b8084526020840193508360208202850162000a148562000e8f565b60005b8481101562000a5357838303885262000a3283835162000ada565b925062000a3f8262000eca565b915060208801975060018101905062000a17565b508196508694505050505092915050565b600062000a718262000eb4565b80845260208401935062000a858362000e9c565b60005b8281101562000abd5762000a9e86835162000c75565b62000aa98262000ed7565b915060208601955060018101905062000a88565b50849250505092915050565b62000ad48162000f04565b82525050565b600062000ae78262000ebf565b80845262000afd81602086016020860162000f53565b62000b088162000f89565b602085010191505092915050565b6000602a82527f30313a2063616c6c657220646f6573206e6f742068617665207468652064657060208301527f6c6f79657220726f6c65000000000000000000000000000000000000000000006040830152606082019050919050565b6000601e82527f31383a206163636f756e7420646f6573206e6f74206861766520726f6c6500006020830152604082019050919050565b6000601f82527f31393a206163636f756e7420697320746865207a65726f2061646472657373006020830152604082019050919050565b6000602f82527f30323a2063616c6c657220646f6573206e6f742068617665207468652066616360208301527f746f7279206f776e657220726f6c6500000000000000000000000000000000006040830152606082019050919050565b6000601c82527f31373a206163636f756e7420616c72656164792068617320726f6c65000000006020830152604082019050919050565b62000c808162000f10565b82525050565b600060208201905062000c9d6000830184620009db565b92915050565b600060608201905062000cba6000830186620009db565b818103602083015262000cce818562000a64565b9050818103604083015262000ce48184620009ec56",
        "5b9050949350505050565b600060408201905062000d056000830185620009db565b62000d14602083018462000c75565b9392505050565b600060208201905062000d32600083018462000ac9565b92915050565b6000602082019050818103600083015262000d538162000b16565b9050919050565b6000602082019050818103600083015262000d758162000b73565b9050919050565b6000602082019050818103600083015262000d978162000baa565b9050919050565b6000602082019050818103600083015262000db98162000be1565b9050919050565b6000602082019050818103600083015262000ddb8162000c3e565b9050919050565b6000604051905081810181811067ffffffffffffffff8211171562000e0657600080fd5b8060405250919050565b600067ffffffffffffffff82111562000e2857600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562000e5157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562000e7a57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101562000f7357808201518184015260208101905062000f56565b8381111562000f83576000848401525b50505050565b6000601f19601f8301169050919050560060806040526040805190810160405280600981526020017f4f6e65546f4d6f72650000000000000000000000000000000000000000000000815250600990805190602001906200005192919062000543565b5073ffffffffffffffffffffffffffffffffffffffff600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000b457600080fd5b5060405162003c6238038062003c628339810180604052620000da919081019062000947565b6000808480620000f9326200034e640100000000026401000000009004565b32600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000600260146101000a81548160ff0219169083151502179055505082518451141515620001e1576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620001d89062000b03565b60405180910390fd5b600090505b83518110156200027b57600084828151811015156200020157fe5b9060200190602002015111151562000250576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620002479062000ae1565b60405180910390fd5b83818151811015156200025f57fe5b90602001906020020151820191508080600101915050620001e6565b6000821180156200028f5750638000000082105b1515620002d3576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620002ca9062000b47565b60405180910390fd5b6007829080600181540180825580915050906001820390600052602060002001600090919290919091505550836006600060018152602001908152602001600020908051906020019062000329929190620005ca565b508260059080519060200190620003429291906200061c565b50505050505062000c98565b62000372816000620003b86401000000000262001dad179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167fd766f4a67950d691b1432c913f7a137a6566c6434f39026cc104656f3de99cdb60405160405180910390a250565b620003d3828262000476640100000000026401000000009004565b15151562000418576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016200040f9062000b69565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620004ec576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401620004e39062000b25565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200058657805160ff1916838001178555620005b7565b82800160010185558215620005b7579182015b82811115620005b657825182559160200191906001019062000599565b5b509050620005c6919062000683565b5090565b82805482825590600052602060002090810192821562000609579160200282015b8281111562000608578251825591602001919060010190620005eb565b5b50905062000618919062000683565b5090565b82805482825590600052602060002090810192821562000670579160200282015b828111156200066f5782518290805190602001906200065e929190620006ab565b50916020019190600101906200063d565b5b5090506200067f919062000732565b5090565b620006a891905b80821115620006a45760008160009055506001016200068a565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006ee57805160ff19168380011785556200071f565b828001600101855582156200071f579182015b828111156200071e57825182559160200191906001019062000701565b5b5090506200072e919062000683565b5090565b6200076091905b808211156200075c576000818162000752919062000763565b5060010162000739565b5090565b90565b50805460018160011615610100020316600290046000825580601f106200078b5750620007ac565b601f016020900490600052602060002090810190620007ab919062000683565b5b50565b6000620007bd825162000c38565b905092915050565b600082601f8301121515620007d957600080fd5b8151620007f0620007ea8262000bb9565b62000b8b565b9150818183526020840193506020810190508360005b838110156200083a57815186016200081f8882620008d3565b84526020840193506020830192505060018101905062000806565b5050505092915050565b600082601f83011215156200085857600080fd5b81516200086f620008698262000be2565b62000b8b565b915081818352602084019350602081019050838560208402820111156200089557600080fd5b60005b83811015620008c95781620008ae888262000931565b84526020840193506020830192505060018101905062000898565b5050505092915050565b600082601f8301121515620008e757600080fd5b8151620008fe620008f88262000c0b565b62000b8b565b915080825260208301602083018583830111156200091b57600080fd5b6200092883828462000c62565b50505092915050565b60006200093f825162000c58565b905092915050565b6000806000606084860312156200095d57600080fd5b60006200096d86828701620007af565b935050602084015167ffffffffffffffff8111156200098b57600080fd5b620009998682870162000844565b925050604084015167ffffffffffffffff811115620009b757600080fd5b620009c586828701620007c5565b9150509250925092565b6000603082527f31343a206e657720746f74616c417373657473206d757374206e6f742062652060208301527f6c657373207468616e206265666f7265000000000000000000000000000000006040830152606082019050919050565b6000808252602082019050919050565b6000601f82527f31393a206163636f756e7420697320746865207a65726f2061646472657373006020830152604082019050919050565b6000601782527f30373a20496e76616c696420746f74616c4173736574730000000000000000006020830152604082019050919050565b6000601c82527f31373a206163636f756e7420616c72656164792068617320726f6c65000000006020830152604082019050919050565b6000602082019050818103600083015262000afc81620009cf565b9050919050565b6000602082019050818103600083015262000b1e8162000a2c565b9050919050565b6000602082019050818103600083015262000b408162000a3c565b9050919050565b6000602082019050818103600083015262000b628162000a73565b9050919050565b6000602082019050818103600083015262000b848162000aaa565b9050919050565b6000604051905081810181811067ffffffffffffffff8211171562000baf57600080fd5b8060405250919050565b600067ffffffffffffffff82111562000bd157600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562000bfa57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111562000c2357600080fd5b601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000c8257808201518184015260208101905062000c65565b8381111562000c92576000848401525b50505050565b612fba8062000ca86000396000f3006080604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302afb2861461010157806307ba60f41461013e5780631756244b146101695780631e74fda2146101945780632392c068146101bd57806339539073146101e65780634c4c9b48146102115780634db9df361461023a5780634e2b3953146102515780635711734b1461",
        "028e5780636b14f0a4146102cb578063799013bc146102e25780637a4d35471461030d57806380b30b3f146103365780638ad7f5401461035f57806393f45b3f14610388578063aefc758a146103b1578063d130b9cd146103dc575b600080fd5b34801561010d57600080fd5b5061012860048036036101239190810190612295565b610419565b6040516101359190612ac8565b60405180910390f35b34801561014a57600080fd5b50610153610436565b6040516101609190612ae3565b60405180910390f35b34801561017557600080fd5b5061017e6104d4565b60405161018b9190612aa6565b60405180910390f35b3480156101a057600080fd5b506101bb60048036036101b69190810190612339565b610548565b005b3480156101c957600080fd5b506101e460048036036101df9190810190612295565b6107c1565b005b3480156101f257600080fd5b506101fb6108b7565b6040516102089190612a8b565b60405180910390f35b34801561021d57600080fd5b50610238600480360361023391908101906123a0565b6108dd565b005b34801561024657600080fd5b5061024f61098b565b005b34801561025d57600080fd5b5061027860048036036102739190810190612295565b610b1a565b6040516102859190612d67565b60405180910390f35b34801561029a57600080fd5b506102b560048036036102b09190810190612422565b610b63565b6040516102c29190612a8b565b60405180910390f35b3480156102d757600080fd5b506102e0610c17565b005b3480156102ee57600080fd5b506102f7610da7565b6040516103049190612ac8565b60405180910390f35b34801561031957600080fd5b50610334600480360361032f9190810190612295565b610dbe565b005b34801561034257600080fd5b5061035d600480360361035891908101906122be565b610eb4565b005b34801561036b57600080fd5b506103866004803603610381919081019061244b565b6111d2565b005b34801561039457600080fd5b506103af60048036036103aa91908101906123e1565b61157c565b005b3480156103bd57600080fd5b506103c66117db565b6040516103d39190612d67565b60405180910390f35b3480156103e857600080fd5b5061040360048036036103fe9190810190612422565b6117e5565b6040516104109190612b05565b60405180910390f35b600061042f826000611bbd90919063ffffffff16565b9050919050565b60098054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104cc5780601f106104a1576101008083540402835291602001916104cc565b820191906000526020600020905b8154815290600101906020018083116104af57829003601f168201915b505050505081565b6060600060078054905090506006600082815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561053d57602002820191906000526020600020905b815481526020019060010190808311610529575b505050505091505090565b600061055333610419565b1515610594576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161058b90612c27565b60405180910390fd5b60078054905090506007600182038154811015156105ae57fe5b906000526020600020015483111515156105fd576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016105f490612c07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561066f576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161066690612d27565b60405180910390fd5b61067883611c87565b1515156106ba576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016106b190612cc7565b60405180910390fd5b836003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016008600082825401925050819055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff167f645797d9fab0efc08a8c8e1b1a514147c9d6656868dbb2fd8c9a608aded76d3084846040516107b3929190612d82565b60405180910390a250505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061086a5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156108ab576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016108a290612c67565b60405180910390fd5b6108b481611cf9565b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108e633610419565b1515610927576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161091e90612c27565b60405180910390fd5b8051600580549050141515610971576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161096890612b47565b60405180910390fd5b8060059080519060200190610987929190611f00565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a345750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610a75576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610a6c90612c67565b60405180910390fd5b600260149054906101000a900460ff161515610ac6576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610abd90612d07565b60405180910390fd5b6000600260146101000a81548160ff0219169083151502179055507f49cf6bd0eac7c3496174468c250e85009598e5c78d9a83e07df711d9da5c185a33604051610b109190612a8b565b60405180910390a1565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610c0e576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610c0590612b67565b60405180910390fd5b80915050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cc05750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610d01576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610cf890612c67565b60405180910390fd5b600260149054906101000a900460ff16151515610d53576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610d4a90612ca7565b60405180910390fd5b6001600260146101000a81548160ff0219169083151502179055507f8773c8f57dc13d3ee6a296fb66e009fe3abc25fce48e4bdeb7583b3064ad35e833604051610d9d9190612a8b565b60405180910390a1565b6000600260149054906101000a900460ff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e675750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ea8576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610e9f90612c67565b60405180910390fd5b610eb181611d53565b50565b600260149054906101000a900460ff16151515610f06576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610efd90612ca7565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16610f2683610b63565b73ffffffffffffffffffffffffffffffffffffffff16141515610f7e576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610f7590612c47565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515610fee576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610fe590612c47565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611060576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161105790612bc7565b60405180910390fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffff",
        "ffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f03adcfa31acbe66b869f42da88a1595526b1bff922f953259ed8dc7057377d6485856040516111c4929190612d82565b60405180910390a450505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061127d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156112be576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016112b590612c67565b60405180910390fd5b6112c783611c87565b1515611308576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016112ff90612b67565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166003600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156113ce576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016113c590612ce7565b60405180910390fd5b6003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600860008282540392505081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f03adcfa31acbe66b869f42da88a1595526b1bff922f953259ed8dc7057377d64868660405161156f929190612d82565b60405180910390a4505050565b6000606060008061158c33610419565b15156115cd576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016115c490612c27565b60405180910390fd5b60078054905093506006600085815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561163257602002820191906000526020600020905b81548152602001906001019080831161161e575b505050505092508451835114151561167f576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161167690612ba7565b60405180910390fd5b600090505b845181101561172957828181518110151561169b57fe5b9060200190602002015185828151811015156116b357fe5b9060200190602002015110151515611700576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016116f790612b27565b60405180910390fd5b848181518110151561170e57fe5b90602001906020020151820191508080600101915050611684565b60008211801561173c5750638000000082105b151561177d576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161177490612c87565b60405180910390fd5b846006600060018701815260200190815260200160002090805190602001906117a7929190611f60565b5060078290806001815401808255809150509060018203906000526020600020016000909192909190915055505050505050565b6000600854905090565b6060600080600080600760008154811015156117fd57fe5b90600052602060002001548611151561197057600092505b60066000600181526020019081526020016000208054905083101561196b578584108015611870575060066000600181526020019081526020016000208381548110151561185f57fe5b906000526020600020015484018611155b1561192e5760058381548110151561188457fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119225780601f106118f757610100808354040283529160200191611922565b820191906000526020600020905b81548152906001019060200180831161190557829003601f168201915b50505050509450611bb4565b60066000600181526020019081526020016000208381548110151561194f57fe5b9060005260206000200154840193508280600101935050611815565b611bb3565b600091505b600780549050821015611bb25760078281548110151561199157fe5b9060005260206000200154861180156119c657506007600183018154811015156119b757fe5b90600052602060002001548611155b15611ba5576007828154811015156119da57fe5b90600052602060002001549350600090505b600660006001815260200190815260200160002080549050811015611ba4578584108015611a7857506006600060018401815260200190815260200160002081815481101515611a3857fe5b90600052602060002001546006600060028501815260200190815260200160002082815481101515611a6657fe5b90600052602060002001548501038611155b15611b3657600581815481101515611a8c57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b2a5780601f10611aff57610100808354040283529160200191611b2a565b820191906000526020600020905b815481529060010190602001808311611b0d57829003601f168201915b50505050509450611bb4565b6006600060018401815260200190815260200160002081815481101515611b5957fe5b90600052602060002001546006600060028501815260200190815260200160002082815481101515611b8757fe5b9060005260206000200154850103935080806001019150506119ec565b5b8180600101925050611975565b5b5b50505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611c30576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401611c2790612be7565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b611d0d816000611dad90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fd766f4a67950d691b1432c913f7a137a6566c6434f39026cc104656f3de99cdb60405160405180910390a250565b611d67816000611e5790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f36b34ae98169cd7ef0173d334314715146307b58e670074b7fcb08536203e19760405160405180910390a250565b611db78282611bbd565b151515611df9576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401611df090612d47565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611e618282611bbd565b1515611ea2576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401611e9990612b87565b60405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b828054828255906000526020600020908101928215611f4f579160200282015b82811115611f4e578251829080519060200190611f3e929190611fad565b5091602001919060010190611f20565b5b509050611f5c919061202d565b5090565b828054828255906000526020600020908101928215611f9c579160200282015b82811115611f9b578251825591602001919060010190611f80565b5b509050611fa99190612059565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611fee57805160ff191683800117855561201c565b8280016001018555821561201c579182015b8281111561201b578251825591602001919060010190612000565b5b5090506120299190612059565b5090565b61205691905b808211156120525760008181612049919061207e565b50600101612033565b5090565b90565b61207b91905b8082111561207757600081600090555060010161205f565b5090565b90565b50805460018160011615610100020316600290046000825580601f106120a4575061",
        "20c3565b601f0160209004906000526020600020908101906120c29190612059565b5b50565b60006120d28235612f03565b905092915050565b600082601f83011215156120ed57600080fd5b81356121006120fb82612ddf565b612db2565b9150818183526020840193506020810190508360005b83811015612146578135860161212c888261222b565b845260208401935060208301925050600181019050612116565b5050505092915050565b600082601f830112151561216357600080fd5b813561217661217182612e07565b612db2565b9150818183526020840193506020810190508385602084028201111561219b57600080fd5b60005b838110156121cb57816121b18882612281565b84526020840193506020830192505060018101905061219e565b5050505092915050565b600082601f83011215156121e857600080fd5b81356121fb6121f682612e2f565b612db2565b9150808252602083016020830185838301111561221757600080fd5b612222838284612f2d565b50505092915050565b600082601f830112151561223e57600080fd5b813561225161224c82612e5b565b612db2565b9150808252602083016020830185838301111561226d57600080fd5b612278838284612f2d565b50505092915050565b600061228d8235612f23565b905092915050565b6000602082840312156122a757600080fd5b60006122b5848285016120c6565b91505092915050565b600080600080608085870312156122d457600080fd5b60006122e2878288016120c6565b94505060206122f3878288016120c6565b935050604061230487828801612281565b925050606085013567ffffffffffffffff81111561232157600080fd5b61232d878288016121d5565b91505092959194509250565b60008060006060848603121561234e57600080fd5b600061235c868287016120c6565b935050602061236d86828701612281565b925050604084013567ffffffffffffffff81111561238a57600080fd5b612396868287016121d5565b9150509250925092565b6000602082840312156123b257600080fd5b600082013567ffffffffffffffff8111156123cc57600080fd5b6123d8848285016120da565b91505092915050565b6000602082840312156123f357600080fd5b600082013567ffffffffffffffff81111561240d57600080fd5b61241984828501612150565b91505092915050565b60006020828403121561243457600080fd5b600061244284828501612281565b91505092915050565b6000806040838503121561245e57600080fd5b600061246c85828601612281565b925050602083013567ffffffffffffffff81111561248957600080fd5b612495858286016121d5565b9150509250929050565b6124a881612ecd565b82525050565b60006124b982612e94565b8084526020840193506124cb83612e87565b60005b828110156124fd576124e1868351612a7c565b6124ea82612ec0565b91506020860195506001810190506124ce565b50849250505092915050565b61251281612eed565b82525050565b600061252382612e9f565b808452612537816020860160208601612f3c565b61254081612f6f565b602085010191505092915050565b600061255982612eb5565b80845261256d816020860160208601612f3c565b61257681612f6f565b602085010191505092915050565b600061258f82612eaa565b8084526125a3816020860160208601612f3c565b6125ac81612f6f565b602085010191505092915050565b6000603082527f31343a206e657720746f74616c417373657473206d757374206e6f742062652060208301527f6c657373207468616e206265666f7265000000000000000000000000000000006040830152606082019050919050565b6000602b82527f31363a206173736574496e666f2773206c656e677468206d757374206571756160208301527f6c20746f206265666f72650000000000000000000000000000000000000000006040830152606082019050919050565b6000601f82527f31313a206173736574496420646f6573206e6f742068617665206f776e6572006020830152604082019050919050565b6000601e82527f31383a206163636f756e7420646f6573206e6f74206861766520726f6c6500006020830152604082019050919050565b6000602d82527f31353a20746f74616c4173736574732773206c656e677468206d75737420657160208301527f75616c20746f206265666f7265000000000000000000000000000000000000006040830152606082019050919050565b6000601c82527f31333a2073656e6420746f20746865207a65726f2061646472657373000000006020830152604082019050919050565b6000601f82527f31393a206163636f756e7420697320746865207a65726f2061646472657373006020830152604082019050919050565b6000601e82527f30383a20617373657449642065786365656420746f74616c41737365747300006020830152604082019050919050565b6000602e82527f30333a2063616c6c657220646f6573206e6f742068617665207468652069737360208301527f756572207065726d697373696f6e0000000000000000000000000000000000006040830152606082019050919050565b6000602182527f31323a2073656e64657220646f6573206e6f74206f776e20746865206173736560208301527f74000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000602d82527f30343a2063616c6c657220646f6573206e6f742068617665207468652073757060208301527f6572207065726d697373696f6e000000000000000000000000000000000000006040830152606082019050919050565b6000601782527f30373a20496e76616c696420746f74616c4173736574730000000000000000006020830152604082019050919050565b6000601982527f30353a20636f6e74726163742069732073757370656e646564000000000000006020830152604082019050919050565b6000601a82527f31303a206173736574496420616c7265616479206973737565640000000000006020830152604082019050919050565b6000601e82527f32303a206173736574496420686173206265656e2064657374726f79656400006020830152604082019050919050565b6000601d82527f30363a20636f6e7472616374206973206e6f742073757370656e6465640000006020830152604082019050919050565b6000601d82527f30393a20697373756520746f20746865207a65726f20616464726573730000006020830152604082019050919050565b6000601c82527f31373a206163636f756e7420616c72656164792068617320726f6c65000000006020830152604082019050919050565b612a8581612ef9565b82525050565b6000602082019050612aa0600083018461249f565b92915050565b60006020820190508181036000830152612ac081846124ae565b905092915050565b6000602082019050612add6000830184612509565b92915050565b60006020820190508181036000830152612afd8184612584565b905092915050565b60006020820190508181036000830152612b1f818461254e565b905092915050565b60006020820190508181036000830152612b40816125ba565b9050919050565b60006020820190508181036000830152612b6081612617565b9050919050565b60006020820190508181036000830152612b8081612674565b9050919050565b60006020820190508181036000830152612ba0816126ab565b9050919050565b60006020820190508181036000830152612bc0816126e2565b9050919050565b60006020820190508181036000830152612be08161273f565b9050919050565b60006020820190508181036000830152612c0081612776565b9050919050565b60006020820190508181036000830152612c20816127ad565b9050919050565b60006020820190508181036000830152612c40816127e4565b9050919050565b60006020820190508181036000830152612c6081612841565b9050919050565b60006020820190508181036000830152612c808161289e565b9050919050565b60006020820190508181036000830152612ca0816128fb565b9050919050565b60006020820190508181036000830152612cc081612932565b9050919050565b60006020820190508181036000830152612ce081612969565b9050919050565b60006020820190508181036000830152612d00816129a0565b9050919050565b60006020820190508181036000830152612d20816129d7565b9050919050565b60006020820190508181036000830152612d4081612a0e565b9050919050565b60006020820190508181036000830152612d6081612a45565b9050919050565b6000602082019050612d7c6000830184612a7c565b92915050565b6000604082019050612d976000830185612a7c565b8181036020830152612da98184612518565b90509392505050565b6000604051905081810181811067ffffffffffffffff82111715612dd557600080fd5b8060405250919050565b600067ffffffffffffffff821115612df657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612e1e57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612e4657600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612e7257600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612f5a578082015181840152602081019050612f3f565b83811115612f69576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a723058208ec3da9443ee3a09edd688d368c90073d9f73f6d564b2b880fb6b6be29fce2696c6578706572696d656e74616cf5003760806040526040805190810160405280600881526020017f4f6e65546f4f6e6500000000000000000000000000000000000000000000000081525060089080519060200190620000519291906200048c565b5073ffffffffffffffffffffffffffffffffffffffff600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000b457600080fd5b5060405160408062002ba5833981018060405281019080805190602001909291908051906020019092919050505081806200",
        "00fe3262000235640100000000026401000000009004565b32600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000600260146101000a81548160ff02191690831515021790555050600081118015620001b15750638000000081105b151562000226576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f30373a20496e76616c696420746f74616c41737365747300000000000000000081525060200191505060405180910390fd5b8060068190555050506200053b565b620002598160006200029f64010000000002620023d0179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167fd766f4a67950d691b1432c913f7a137a6566c6434f39026cc104656f3de99cdb60405160405180910390a250565b620002ba82826200038e640100000000026401000000009004565b15151562000330576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f31373a206163636f756e7420616c72656164792068617320726f6c650000000081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151562000435576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f31393a206163636f756e7420697320746865207a65726f20616464726573730081525060200191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004cf57805160ff191683800117855562000500565b8280016001018555821562000500579182015b82811115620004ff578251825591602001919060010190620004e2565b5b5090506200050f919062000513565b5090565b6200053891905b80821115620005345760008160009055506001016200051a565b5090565b90565b61265a806200054b6000396000f3006080604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302afb2861461010157806307ba60f41461015c5780630df9ce93146101ec5780631756244b146102c55780632392c068146102f057806339539073146103335780634db9df361461038a5780634e2b3953146103a157806353fa95e9146103f85780635549e5a6146104395780635711734b146104ac5780636b14f0a414610519578063799013bc146105305780637a4d35471461055f57806380b30b3f146105a25780638ad7f54014610655578063aefc758a146106c8578063d130b9cd146106f3575b600080fd5b34801561010d57600080fd5b50610142600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610799565b604051808215151515815260200191505060405180910390f35b34801561016857600080fd5b506101716107b6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b1578082015181840152602081019050610196565b50505050905090810190601f1680156101de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f857600080fd5b506102c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610854565b005b3480156102d157600080fd5b506102da610c2e565b6040518082815260200191505060405180910390f35b3480156102fc57600080fd5b50610331600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c38565b005b34801561033f57600080fd5b50610348610d87565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039657600080fd5b5061039f610dad565b005b3480156103ad57600080fd5b506103e2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ff4565b6040518082815260200191505060405180910390f35b34801561040457600080fd5b506104236004803603810190808035906020019092919050505061103d565b6040518082815260200191505060405180910390f35b34801561044557600080fd5b506104aa60048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611215565b005b3480156104b857600080fd5b506104d7600480360381019080803590602001909291905050506112e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052557600080fd5b5061052e6113cb565b005b34801561053c57600080fd5b50610545611613565b604051808215151515815260200191505060405180910390f35b34801561056b57600080fd5b506105a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061162a565b005b3480156105ae57600080fd5b50610653600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611779565b005b34801561066157600080fd5b506106c660048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611c1a565b005b3480156106d457600080fd5b506106dd6120ee565b6040518082815260200191505060405180910390f35b3480156106ff57600080fd5b5061071e600480360381019080803590602001909291905050506120f8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561075e578082015181840152602081019050610743565b50505050905090810190601f16801561078b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006107af8260006121ad90919063ffffffff16565b9050919050565b60088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561084c5780601f106108215761010080835404028352916020019161084c565b820191906000526020600020905b81548152906001019060200180831161082f57829003601f168201915b505050505081565b61085d33610799565b15156108f7576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f30333a2063616c6c657220646f6573206e6f742068617665207468652069737381526020017f756572207065726d697373696f6e00000000000000000000000000000000000081525060400191505060405180910390fd5b6006548311151515610971576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f30383a20617373657449642065786365656420746f74616c417373657473000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515610a16576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f30393a20697373756520746f20746865207a65726f206164647265737300000081525060200191505060405180910390fd5b610a1f836122aa565b151515610a94576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f31303a206173736574496420616c72656164792069737375656400000000000081525060200191505060405180910390fd5b836003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560008581526020019081526020016000209080519060200190610b0d929190612589565b5060016007600082825401925050819055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff167f645797d9fab0efc08a8c8e1b1a514147c9d6656868db",
        "b2fd8c9a608aded76d3084836040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610bed578082015181840152602081019050610bd2565b50505050905090810190601f168015610c1a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a250505050565b6000600654905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ce15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610d7b576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f30343a2063616c6c657220646f6573206e6f742068617665207468652073757081526020017f6572207065726d697373696f6e0000000000000000000000000000000000000081525060400191505060405180910390fd5b610d848161231c565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e565750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ef0576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f30343a2063616c6c657220646f6573206e6f742068617665207468652073757081526020017f6572207065726d697373696f6e0000000000000000000000000000000000000081525060400191505060405180910390fd5b600260149054906101000a900460ff161515610f74576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f30363a20636f6e7472616374206973206e6f742073757370656e64656400000081525060200191505060405180910390fd5b6000600260146101000a81548160ff0219169083151502179055507f49cf6bd0eac7c3496174468c250e85009598e5c78d9a83e07df711d9da5c185a33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061104833610799565b15156110e2576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f30333a2063616c6c657220646f6573206e6f742068617665207468652069737381526020017f756572207065726d697373696f6e00000000000000000000000000000000000081525060400191505060405180910390fd5b6006548210151515611182576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f31343a206e657720746f74616c417373657473206d757374206e6f742062652081526020017f6c657373207468616e206265666f72650000000000000000000000000000000081525060400191505060405180910390fd5b6000821180156111955750638000000082105b1515611209576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f30373a20496e76616c696420746f74616c41737365747300000000000000000081525060200191505060405180910390fd5b81600681905550919050565b61121e33610799565b15156112b8576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f30333a2063616c6c657220646f6573206e6f742068617665207468652069737381526020017f756572207065726d697373696f6e00000000000000000000000000000000000081525060400191505060405180910390fd5b806005600084815260200190815260200160002090805190602001906112df929190612589565b505050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156113c2576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f31313a206173736574496420646f6573206e6f742068617665206f776e65720081525060200191505060405180910390fd5b80915050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114745750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561150e576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f30343a2063616c6c657220646f6573206e6f742068617665207468652073757081526020017f6572207065726d697373696f6e0000000000000000000000000000000000000081525060400191505060405180910390fd5b600260149054906101000a900460ff16151515611593576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f30353a20636f6e74726163742069732073757370656e6465640000000000000081525060200191505060405180910390fd5b6001600260146101000a81548160ff0219169083151502179055507f8773c8f57dc13d3ee6a296fb66e009fe3abc25fce48e4bdeb7583b3064ad35e833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600260149054906101000a900460ff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116d35750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561176d576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f30343a2063616c6c657220646f6573206e6f742068617665207468652073757081526020017f6572207065726d697373696f6e0000000000000000000000000000000000000081525060400191505060405180910390fd5b61177681612376565b50565b600260149054906101000a900460ff161515156117fe576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f30353a20636f6e74726163742069732073757370656e6465640000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1661181e836112e4565b73ffffffffffffffffffffffffffffffffffffffff161415156118cf576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f31323a2073656e64657220646f6573206e6f74206f776e20746865206173736581526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515611998576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f31323a2073656e64657220646f6573206e6f74206f776e20746865206173736581526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611a3d576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f31333a2073656e6420746f20746865207a65726f20616464726573730000000081525060200191505060405180910390fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f03adcfa31acbe66b869f42da88a1595526b1bff922f953259ed8dc7057377d6485856040518083815260",
        "200180602001828103825283818151815260200191508051906020019080838360005b83811015611bd9578082015181840152602081019050611bbe565b50505050905090810190601f168015611c065780820380516001836020036101000a031916815260200191505b50935050505060405180910390a450505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611cc55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611d5f576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f30343a2063616c6c657220646f6573206e6f742068617665207468652073757081526020017f6572207065726d697373696f6e0000000000000000000000000000000000000081525060400191505060405180910390fd5b611d68836122aa565b1515611ddc576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f31313a206173736574496420646f6573206e6f742068617665206f776e65720081525060200191505060405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166003600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611ed5576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f32303a206173736574496420686173206265656e2064657374726f796564000081525060200191505060405180910390fd5b6003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600760008282540392505081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f03adcfa31acbe66b869f42da88a1595526b1bff922f953259ed8dc7057377d6486866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156120ae578082015181840152602081019050612093565b50505050905090810190601f1680156120db5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b6000600754905090565b6060600560008381526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121a15780601f10612176576101008083540402835291602001916121a1565b820191906000526020600020905b81548152906001019060200180831161218457829003601f168201915b50505050509050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612253576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f31393a206163636f756e7420697320746865207a65726f20616464726573730081525060200191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6123308160006123d090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fd766f4a67950d691b1432c913f7a137a6566c6434f39026cc104656f3de99cdb60405160405180910390a250565b61238a8160006124ad90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f36b34ae98169cd7ef0173d334314715146307b58e670074b7fcb08536203e19760405160405180910390a250565b6123da82826121ad565b15151561244f576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f31373a206163636f756e7420616c72656164792068617320726f6c650000000081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6124b782826121ad565b151561252b576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f31383a206163636f756e7420646f6573206e6f74206861766520726f6c65000081525060200191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125ca57805160ff19168380011785556125f8565b828001600101855582156125f8579182015b828111156125f75782518255916020019190600101906125dc565b5b5090506126059190612609565b5090565b61262b91905b8082111561262757600081600090555060010161260f565b5090565b905600a165627a7a72305820deabd77caf5312c7cb7d401b63b82da28dcfbfad605f5935c819da928d246b2e0029a265627a7a72305820f1de6bc9f7abf1c09cbaef18b058dfe5d0e3d60054b3db11408fe7ba328316a96c6578706572696d656e74616cf50037"
    };

    public static final String SM_BINARY =
            org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {
        "[{\"conflictFields\":[{\"kind\":0}],\"constant\":false,\"inputs\":[{\"name\":\"totalAssets\",\"type\":\"uint256[]\"},{\"name\":\"info\",\"type\":\"string[]\"}],\"name\":\"deployMore\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"selector\":[819838656,1487676497],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isDeployer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"selector\":[1354979492,1833165199],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"value\":[1]}],\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addDeployer\",\"outputs\":[],\"payable\":false,\"selector\":[2282700857,402146552],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"constant\":false,\"inputs\":[{\"name\":\"totalAssets\",\"type\":\"uint256\"}],\"name\":\"deployOne\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"selector\":[3653788385,1625255257],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0},{\"kind\":4,\"value\":[1]}],\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeDeployer\",\"outputs\":[],\"payable\":false,\"selector\":[4078296966,4191042268],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"DeployerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"DeployerRemoved\",\"type\":\"event\"}]"
    };

    public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_DEPLOYMORE = "deployMore";

    public static final String FUNC_ISDEPLOYER = "isDeployer";

    public static final String FUNC_ADDDEPLOYER = "addDeployer";

    public static final String FUNC_DEPLOYONE = "deployOne";

    public static final String FUNC_REMOVEDEPLOYER = "removeDeployer";

    public static final Event DEPLOYERADDED_EVENT =
            new Event(
                    "DeployerAdded",
                    Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}));;

    public static final Event DEPLOYERREMOVED_EVENT =
            new Event(
                    "DeployerRemoved",
                    Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}));;

    protected Factory(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public static String getABI() {
        return ABI;
    }

    public TransactionReceipt deployMore(List<BigInteger> totalAssets, List<String> info) {
        final Function function =
                new Function(
                        FUNC_DEPLOYMORE,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<
                                        org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256>(
                                        org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256
                                                .class,
                                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(
                                                totalAssets,
                                                org.fisco.bcos.sdk.v3.codec.datatypes.generated
                                                        .Uint256.class)),
                                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<
                                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(
                                                info,
                                                org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String
                                                        .class))),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return executeTransaction(function);
    }

    public String deployMore(
            List<BigInteger> totalAssets, List<String> info, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_DEPLOYMORE,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<
                                        org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256>(
                                        org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256
                                                .class,
                                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(
                                                totalAssets,
                                                org.fisco.bcos.sdk.v3.codec.datatypes.generated
                                                        .Uint256.class)),
                                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<
                                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(
                                                info,
                                                org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String
                                                        .class))),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForDeployMore(
            List<BigInteger> totalAssets, List<String> info) {
        final Function function =
                new Function(
                        FUNC_DEPLOYMORE,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<
                                        org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256>(
                                        org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256
                                                .class,
                                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(
                                                totalAssets,
                                                org.fisco.bcos.sdk.v3.codec.datatypes.generated
                                                        .Uint256.class)),
                                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<
                                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(
                                                info,
                                                org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String
                                                        .class))),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return createSignedTransaction(function);
    }

    public Tuple2<List<BigInteger>, List<String>> getDeployMoreInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_DEPLOYMORE,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Uint256>>() {},
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results =
                this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<List<BigInteger>, List<String>>(
                convertToNative((List<Uint256>) results.get(0).getValue()),
                convertToNative((List<Utf8String>) results.get(1).getValue()));
    }

    public Tuple1<String> getDeployMoreOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_DEPLOYMORE,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        List<Type> results =
                this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public Boolean isDeployer(String account) throws ContractException {
        final Function function =
                new Function(
                        FUNC_ISDEPLOYER,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeCallWithSingleValueReturn(function, Boolean.class);
    }

    public TransactionReceipt addDeployer(String account) {
        final Function function =
                new Function(
                        FUNC_ADDDEPLOYER,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return executeTransaction(function);
    }

    public String addDeployer(String account, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_ADDDEPLOYER,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForAddDeployer(String account) {
        final Function function =
                new Function(
                        FUNC_ADDDEPLOYER,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return createSignedTransaction(function);
    }

    public Tuple1<String> getAddDeployerInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_ADDDEPLOYER,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        List<Type> results =
                this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public TransactionReceipt deployOne(BigInteger totalAssets) {
        final Function function =
                new Function(
                        FUNC_DEPLOYONE,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(
                                        totalAssets)),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return executeTransaction(function);
    }

    public String deployOne(BigInteger totalAssets, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_DEPLOYONE,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(
                                        totalAssets)),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForDeployOne(BigInteger totalAssets) {
        final Function function =
                new Function(
                        FUNC_DEPLOYONE,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256(
                                        totalAssets)),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return createSignedTransaction(function);
    }

    public Tuple1<BigInteger> getDeployOneInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_DEPLOYONE,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        List<Type> results =
                this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>((BigInteger) results.get(0).getValue());
    }

    public Tuple1<String> getDeployOneOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_DEPLOYONE,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        List<Type> results =
                this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public TransactionReceipt removeDeployer(String account) {
        final Function function =
                new Function(
                        FUNC_REMOVEDEPLOYER,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return executeTransaction(function);
    }

    public String removeDeployer(String account, TransactionCallback callback) {
        final Function function =
                new Function(
                        FUNC_REMOVEDEPLOYER,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForRemoveDeployer(String account) {
        final Function function =
                new Function(
                        FUNC_REMOVEDEPLOYER,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.sdk.v3.codec.datatypes.Address(account)),
                        Collections.<TypeReference<?>>emptyList(),
                        0);
        return createSignedTransaction(function);
    }

    public Tuple1<String> getRemoveDeployerInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_REMOVEDEPLOYER,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        List<Type> results =
                this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public List<DeployerAddedEventResponse> getDeployerAddedEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList =
                extractEventParametersWithLog(DEPLOYERADDED_EVENT, transactionReceipt);
        ArrayList<DeployerAddedEventResponse> responses =
                new ArrayList<DeployerAddedEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            DeployerAddedEventResponse typedResponse = new DeployerAddedEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.account = (String) eventValues.getIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public List<DeployerRemovedEventResponse> getDeployerRemovedEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList =
                extractEventParametersWithLog(DEPLOYERREMOVED_EVENT, transactionReceipt);
        ArrayList<DeployerRemovedEventResponse> responses =
                new ArrayList<DeployerRemovedEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            DeployerRemovedEventResponse typedResponse = new DeployerRemovedEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.account = (String) eventValues.getIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public static Factory load(String contractAddress, Client client, CryptoKeyPair credential) {
        return new Factory(contractAddress, client, credential);
    }

    public static Factory deploy(Client client, CryptoKeyPair credential) throws ContractException {
        return deploy(
                Factory.class,
                client,
                credential,
                getBinary(client.getCryptoSuite()),
                getABI(),
                null,
                null);
    }

    public static class DeployerAddedEventResponse {
        public TransactionReceipt.Logs log;

        public String account;
    }

    public static class DeployerRemovedEventResponse {
        public TransactionReceipt.Logs log;

        public String account;
    }
}
